package org.example.RobotModel.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.example.RobotModel.services.RobotDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalRobotDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Int'", "'String'", "'Long'", "'Bool'", "'Float'", "'Robot'", "'{'", "'}'", "'Sensor'", "'Activator'", "'('", "')'", "':'"
    };
    public static final int RULE_STRING=6;
    public static final int RULE_SL_COMMENT=8;
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__11=11;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int EOF=-1;
    public static final int RULE_ID=4;
    public static final int RULE_WS=9;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=5;
    public static final int T__22=22;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__23=23;
    public static final int T__20=20;
    public static final int T__21=21;

    // delegates
    // delegators


        public InternalRobotDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalRobotDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalRobotDslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g"; }



     	private RobotDslGrammarAccess grammarAccess;
     	
        public InternalRobotDslParser(TokenStream input, RobotDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "System";	
       	}
       	
       	@Override
       	protected RobotDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleSystem"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:67:1: entryRuleSystem returns [EObject current=null] : iv_ruleSystem= ruleSystem EOF ;
    public final EObject entryRuleSystem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSystem = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:68:2: (iv_ruleSystem= ruleSystem EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:69:2: iv_ruleSystem= ruleSystem EOF
            {
             newCompositeNode(grammarAccess.getSystemRule()); 
            pushFollow(FOLLOW_ruleSystem_in_entryRuleSystem75);
            iv_ruleSystem=ruleSystem();

            state._fsp--;

             current =iv_ruleSystem; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSystem85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSystem"


    // $ANTLR start "ruleSystem"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:76:1: ruleSystem returns [EObject current=null] : ( ( (lv_devices_0_0= ruleDevice ) )* ( (lv_robot_1_0= ruleRobot ) ) ) ;
    public final EObject ruleSystem() throws RecognitionException {
        EObject current = null;

        EObject lv_devices_0_0 = null;

        EObject lv_robot_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:79:28: ( ( ( (lv_devices_0_0= ruleDevice ) )* ( (lv_robot_1_0= ruleRobot ) ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:80:1: ( ( (lv_devices_0_0= ruleDevice ) )* ( (lv_robot_1_0= ruleRobot ) ) )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:80:1: ( ( (lv_devices_0_0= ruleDevice ) )* ( (lv_robot_1_0= ruleRobot ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:80:2: ( (lv_devices_0_0= ruleDevice ) )* ( (lv_robot_1_0= ruleRobot ) )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:80:2: ( (lv_devices_0_0= ruleDevice ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0>=19 && LA1_0<=20)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:81:1: (lv_devices_0_0= ruleDevice )
            	    {
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:81:1: (lv_devices_0_0= ruleDevice )
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:82:3: lv_devices_0_0= ruleDevice
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSystemAccess().getDevicesDeviceParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleDevice_in_ruleSystem131);
            	    lv_devices_0_0=ruleDevice();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSystemRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"devices",
            	            		lv_devices_0_0, 
            	            		"Device");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:98:3: ( (lv_robot_1_0= ruleRobot ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:99:1: (lv_robot_1_0= ruleRobot )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:99:1: (lv_robot_1_0= ruleRobot )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:100:3: lv_robot_1_0= ruleRobot
            {
             
            	        newCompositeNode(grammarAccess.getSystemAccess().getRobotRobotParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleRobot_in_ruleSystem153);
            lv_robot_1_0=ruleRobot();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSystemRule());
            	        }
                   		set(
                   			current, 
                   			"robot",
                    		lv_robot_1_0, 
                    		"Robot");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSystem"


    // $ANTLR start "entryRuleType"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:124:1: entryRuleType returns [String current=null] : iv_ruleType= ruleType EOF ;
    public final String entryRuleType() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleType = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:125:2: (iv_ruleType= ruleType EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:126:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType190);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType201); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:133:1: ruleType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'Int' | kw= 'String' | kw= 'Long' | kw= 'Bool' | kw= 'Float' ) ;
    public final AntlrDatatypeRuleToken ruleType() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:136:28: ( (kw= 'Int' | kw= 'String' | kw= 'Long' | kw= 'Bool' | kw= 'Float' ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:137:1: (kw= 'Int' | kw= 'String' | kw= 'Long' | kw= 'Bool' | kw= 'Float' )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:137:1: (kw= 'Int' | kw= 'String' | kw= 'Long' | kw= 'Bool' | kw= 'Float' )
            int alt2=5;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt2=1;
                }
                break;
            case 12:
                {
                alt2=2;
                }
                break;
            case 13:
                {
                alt2=3;
                }
                break;
            case 14:
                {
                alt2=4;
                }
                break;
            case 15:
                {
                alt2=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:138:2: kw= 'Int'
                    {
                    kw=(Token)match(input,11,FOLLOW_11_in_ruleType239); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getIntKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:145:2: kw= 'String'
                    {
                    kw=(Token)match(input,12,FOLLOW_12_in_ruleType258); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getStringKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:152:2: kw= 'Long'
                    {
                    kw=(Token)match(input,13,FOLLOW_13_in_ruleType277); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getLongKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:159:2: kw= 'Bool'
                    {
                    kw=(Token)match(input,14,FOLLOW_14_in_ruleType296); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getBoolKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:166:2: kw= 'Float'
                    {
                    kw=(Token)match(input,15,FOLLOW_15_in_ruleType315); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getFloatKeyword_4()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleRobot"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:179:1: entryRuleRobot returns [EObject current=null] : iv_ruleRobot= ruleRobot EOF ;
    public final EObject entryRuleRobot() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRobot = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:180:2: (iv_ruleRobot= ruleRobot EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:181:2: iv_ruleRobot= ruleRobot EOF
            {
             newCompositeNode(grammarAccess.getRobotRule()); 
            pushFollow(FOLLOW_ruleRobot_in_entryRuleRobot355);
            iv_ruleRobot=ruleRobot();

            state._fsp--;

             current =iv_ruleRobot; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRobot365); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRobot"


    // $ANTLR start "ruleRobot"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:188:1: ruleRobot returns [EObject current=null] : (otherlv_0= 'Robot' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= RULE_ID ) )+ otherlv_4= '}' ) ;
    public final EObject ruleRobot() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:191:28: ( (otherlv_0= 'Robot' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= RULE_ID ) )+ otherlv_4= '}' ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:192:1: (otherlv_0= 'Robot' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= RULE_ID ) )+ otherlv_4= '}' )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:192:1: (otherlv_0= 'Robot' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= RULE_ID ) )+ otherlv_4= '}' )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:192:3: otherlv_0= 'Robot' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= RULE_ID ) )+ otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleRobot402); 

                	newLeafNode(otherlv_0, grammarAccess.getRobotAccess().getRobotKeyword_0());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:196:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:197:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:197:1: (lv_name_1_0= RULE_ID )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:198:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRobot419); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRobotAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRobotRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleRobot436); 

                	newLeafNode(otherlv_2, grammarAccess.getRobotAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:218:1: ( (otherlv_3= RULE_ID ) )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==RULE_ID) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:219:1: (otherlv_3= RULE_ID )
            	    {
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:219:1: (otherlv_3= RULE_ID )
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:220:3: otherlv_3= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getRobotRule());
            	    	        }
            	            
            	    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRobot456); 

            	    		newLeafNode(otherlv_3, grammarAccess.getRobotAccess().getDevicesDeviceCrossReference_3_0()); 
            	    	

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleRobot469); 

                	newLeafNode(otherlv_4, grammarAccess.getRobotAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRobot"


    // $ANTLR start "entryRuleDevice"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:243:1: entryRuleDevice returns [EObject current=null] : iv_ruleDevice= ruleDevice EOF ;
    public final EObject entryRuleDevice() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDevice = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:244:2: (iv_ruleDevice= ruleDevice EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:245:2: iv_ruleDevice= ruleDevice EOF
            {
             newCompositeNode(grammarAccess.getDeviceRule()); 
            pushFollow(FOLLOW_ruleDevice_in_entryRuleDevice505);
            iv_ruleDevice=ruleDevice();

            state._fsp--;

             current =iv_ruleDevice; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDevice515); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDevice"


    // $ANTLR start "ruleDevice"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:252:1: ruleDevice returns [EObject current=null] : (this_Sensor_0= ruleSensor | this_Activator_1= ruleActivator ) ;
    public final EObject ruleDevice() throws RecognitionException {
        EObject current = null;

        EObject this_Sensor_0 = null;

        EObject this_Activator_1 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:255:28: ( (this_Sensor_0= ruleSensor | this_Activator_1= ruleActivator ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:256:1: (this_Sensor_0= ruleSensor | this_Activator_1= ruleActivator )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:256:1: (this_Sensor_0= ruleSensor | this_Activator_1= ruleActivator )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==19) ) {
                alt4=1;
            }
            else if ( (LA4_0==20) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:257:5: this_Sensor_0= ruleSensor
                    {
                     
                            newCompositeNode(grammarAccess.getDeviceAccess().getSensorParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSensor_in_ruleDevice562);
                    this_Sensor_0=ruleSensor();

                    state._fsp--;

                     
                            current = this_Sensor_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:267:5: this_Activator_1= ruleActivator
                    {
                     
                            newCompositeNode(grammarAccess.getDeviceAccess().getActivatorParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleActivator_in_ruleDevice589);
                    this_Activator_1=ruleActivator();

                    state._fsp--;

                     
                            current = this_Activator_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDevice"


    // $ANTLR start "entryRuleSensor"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:283:1: entryRuleSensor returns [EObject current=null] : iv_ruleSensor= ruleSensor EOF ;
    public final EObject entryRuleSensor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSensor = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:284:2: (iv_ruleSensor= ruleSensor EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:285:2: iv_ruleSensor= ruleSensor EOF
            {
             newCompositeNode(grammarAccess.getSensorRule()); 
            pushFollow(FOLLOW_ruleSensor_in_entryRuleSensor624);
            iv_ruleSensor=ruleSensor();

            state._fsp--;

             current =iv_ruleSensor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSensor634); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSensor"


    // $ANTLR start "ruleSensor"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:292:1: ruleSensor returns [EObject current=null] : (otherlv_0= 'Sensor' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' ) ;
    public final EObject ruleSensor() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_actions_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:295:28: ( (otherlv_0= 'Sensor' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:296:1: (otherlv_0= 'Sensor' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:296:1: (otherlv_0= 'Sensor' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:296:3: otherlv_0= 'Sensor' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleSensor671); 

                	newLeafNode(otherlv_0, grammarAccess.getSensorAccess().getSensorKeyword_0());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:300:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:301:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:301:1: (lv_name_1_0= RULE_ID )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:302:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSensor688); 

            			newLeafNode(lv_name_1_0, grammarAccess.getSensorAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSensorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleSensor705); 

                	newLeafNode(otherlv_2, grammarAccess.getSensorAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:322:1: ( (lv_actions_3_0= ruleAction ) )+
            int cnt5=0;
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==RULE_ID) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:323:1: (lv_actions_3_0= ruleAction )
            	    {
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:323:1: (lv_actions_3_0= ruleAction )
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:324:3: lv_actions_3_0= ruleAction
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSensorAccess().getActionsActionParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAction_in_ruleSensor726);
            	    lv_actions_3_0=ruleAction();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSensorRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actions",
            	            		lv_actions_3_0, 
            	            		"Action");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt5 >= 1 ) break loop5;
                        EarlyExitException eee =
                            new EarlyExitException(5, input);
                        throw eee;
                }
                cnt5++;
            } while (true);

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleSensor739); 

                	newLeafNode(otherlv_4, grammarAccess.getSensorAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSensor"


    // $ANTLR start "entryRuleActivator"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:352:1: entryRuleActivator returns [EObject current=null] : iv_ruleActivator= ruleActivator EOF ;
    public final EObject entryRuleActivator() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActivator = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:353:2: (iv_ruleActivator= ruleActivator EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:354:2: iv_ruleActivator= ruleActivator EOF
            {
             newCompositeNode(grammarAccess.getActivatorRule()); 
            pushFollow(FOLLOW_ruleActivator_in_entryRuleActivator775);
            iv_ruleActivator=ruleActivator();

            state._fsp--;

             current =iv_ruleActivator; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActivator785); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActivator"


    // $ANTLR start "ruleActivator"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:361:1: ruleActivator returns [EObject current=null] : (otherlv_0= 'Activator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' ) ;
    public final EObject ruleActivator() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_actions_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:364:28: ( (otherlv_0= 'Activator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:365:1: (otherlv_0= 'Activator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:365:1: (otherlv_0= 'Activator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}' )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:365:3: otherlv_0= 'Activator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )+ otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleActivator822); 

                	newLeafNode(otherlv_0, grammarAccess.getActivatorAccess().getActivatorKeyword_0());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:369:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:370:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:370:1: (lv_name_1_0= RULE_ID )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:371:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActivator839); 

            			newLeafNode(lv_name_1_0, grammarAccess.getActivatorAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActivatorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleActivator856); 

                	newLeafNode(otherlv_2, grammarAccess.getActivatorAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:391:1: ( (lv_actions_3_0= ruleAction ) )+
            int cnt6=0;
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==RULE_ID) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:392:1: (lv_actions_3_0= ruleAction )
            	    {
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:392:1: (lv_actions_3_0= ruleAction )
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:393:3: lv_actions_3_0= ruleAction
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getActivatorAccess().getActionsActionParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAction_in_ruleActivator877);
            	    lv_actions_3_0=ruleAction();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getActivatorRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actions",
            	            		lv_actions_3_0, 
            	            		"Action");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt6 >= 1 ) break loop6;
                        EarlyExitException eee =
                            new EarlyExitException(6, input);
                        throw eee;
                }
                cnt6++;
            } while (true);

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleActivator890); 

                	newLeafNode(otherlv_4, grammarAccess.getActivatorAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActivator"


    // $ANTLR start "entryRuleAction"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:421:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ;
    public final EObject entryRuleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAction = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:422:2: (iv_ruleAction= ruleAction EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:423:2: iv_ruleAction= ruleAction EOF
            {
             newCompositeNode(grammarAccess.getActionRule()); 
            pushFollow(FOLLOW_ruleAction_in_entryRuleAction926);
            iv_ruleAction=ruleAction();

            state._fsp--;

             current =iv_ruleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAction936); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAction"


    // $ANTLR start "ruleAction"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:430:1: ruleAction returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_params_2_0= ruleParam ) )* otherlv_3= ')' ( (lv_retour_4_0= ruleRetour ) )? ) ;
    public final EObject ruleAction() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_params_2_0 = null;

        EObject lv_retour_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:433:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_params_2_0= ruleParam ) )* otherlv_3= ')' ( (lv_retour_4_0= ruleRetour ) )? ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:434:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_params_2_0= ruleParam ) )* otherlv_3= ')' ( (lv_retour_4_0= ruleRetour ) )? )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:434:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_params_2_0= ruleParam ) )* otherlv_3= ')' ( (lv_retour_4_0= ruleRetour ) )? )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:434:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_params_2_0= ruleParam ) )* otherlv_3= ')' ( (lv_retour_4_0= ruleRetour ) )?
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:434:2: ( (lv_name_0_0= RULE_ID ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:435:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:435:1: (lv_name_0_0= RULE_ID )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:436:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAction978); 

            			newLeafNode(lv_name_0_0, grammarAccess.getActionAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleAction995); 

                	newLeafNode(otherlv_1, grammarAccess.getActionAccess().getLeftParenthesisKeyword_1());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:456:1: ( (lv_params_2_0= ruleParam ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==RULE_ID) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:457:1: (lv_params_2_0= ruleParam )
            	    {
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:457:1: (lv_params_2_0= ruleParam )
            	    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:458:3: lv_params_2_0= ruleParam
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getActionAccess().getParamsParamParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleParam_in_ruleAction1016);
            	    lv_params_2_0=ruleParam();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getActionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"params",
            	            		lv_params_2_0, 
            	            		"Param");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            otherlv_3=(Token)match(input,22,FOLLOW_22_in_ruleAction1029); 

                	newLeafNode(otherlv_3, grammarAccess.getActionAccess().getRightParenthesisKeyword_3());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:478:1: ( (lv_retour_4_0= ruleRetour ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==23) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:479:1: (lv_retour_4_0= ruleRetour )
                    {
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:479:1: (lv_retour_4_0= ruleRetour )
                    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:480:3: lv_retour_4_0= ruleRetour
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionAccess().getRetourRetourParserRuleCall_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleRetour_in_ruleAction1050);
                    lv_retour_4_0=ruleRetour();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionRule());
                    	        }
                           		set(
                           			current, 
                           			"retour",
                            		lv_retour_4_0, 
                            		"Retour");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAction"


    // $ANTLR start "entryRuleRetour"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:504:1: entryRuleRetour returns [EObject current=null] : iv_ruleRetour= ruleRetour EOF ;
    public final EObject entryRuleRetour() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRetour = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:505:2: (iv_ruleRetour= ruleRetour EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:506:2: iv_ruleRetour= ruleRetour EOF
            {
             newCompositeNode(grammarAccess.getRetourRule()); 
            pushFollow(FOLLOW_ruleRetour_in_entryRuleRetour1087);
            iv_ruleRetour=ruleRetour();

            state._fsp--;

             current =iv_ruleRetour; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRetour1097); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRetour"


    // $ANTLR start "ruleRetour"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:513:1: ruleRetour returns [EObject current=null] : (otherlv_0= ':' ( (lv_type_1_0= ruleType ) ) ) ;
    public final EObject ruleRetour() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_type_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:516:28: ( (otherlv_0= ':' ( (lv_type_1_0= ruleType ) ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:517:1: (otherlv_0= ':' ( (lv_type_1_0= ruleType ) ) )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:517:1: (otherlv_0= ':' ( (lv_type_1_0= ruleType ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:517:3: otherlv_0= ':' ( (lv_type_1_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleRetour1134); 

                	newLeafNode(otherlv_0, grammarAccess.getRetourAccess().getColonKeyword_0());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:521:1: ( (lv_type_1_0= ruleType ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:522:1: (lv_type_1_0= ruleType )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:522:1: (lv_type_1_0= ruleType )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:523:3: lv_type_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getRetourAccess().getTypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleRetour1155);
            lv_type_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRetourRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRetour"


    // $ANTLR start "entryRuleParam"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:547:1: entryRuleParam returns [EObject current=null] : iv_ruleParam= ruleParam EOF ;
    public final EObject entryRuleParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParam = null;


        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:548:2: (iv_ruleParam= ruleParam EOF )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:549:2: iv_ruleParam= ruleParam EOF
            {
             newCompositeNode(grammarAccess.getParamRule()); 
            pushFollow(FOLLOW_ruleParam_in_entryRuleParam1191);
            iv_ruleParam=ruleParam();

            state._fsp--;

             current =iv_ruleParam; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParam1201); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParam"


    // $ANTLR start "ruleParam"
    // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:556:1: ruleParam returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleType ) ) ) ;
    public final EObject ruleParam() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:559:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleType ) ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:560:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleType ) ) )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:560:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleType ) ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:560:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleType ) )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:560:2: ( (lv_name_0_0= RULE_ID ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:561:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:561:1: (lv_name_0_0= RULE_ID )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:562:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleParam1243); 

            			newLeafNode(lv_name_0_0, grammarAccess.getParamAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getParamRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleParam1260); 

                	newLeafNode(otherlv_1, grammarAccess.getParamAccess().getColonKeyword_1());
                
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:582:1: ( (lv_type_2_0= ruleType ) )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:583:1: (lv_type_2_0= ruleType )
            {
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:583:1: (lv_type_2_0= ruleType )
            // ../org.example.RobotModel/src-gen/org/example/RobotModel/parser/antlr/internal/InternalRobotDsl.g:584:3: lv_type_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getParamAccess().getTypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleParam1281);
            lv_type_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getParamRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParam"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleSystem_in_entryRuleSystem75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSystem85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDevice_in_ruleSystem131 = new BitSet(new long[]{0x0000000000190000L});
    public static final BitSet FOLLOW_ruleRobot_in_ruleSystem153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType190 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType201 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleType239 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleType258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleType277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleType296 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleType315 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRobot_in_entryRuleRobot355 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRobot365 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleRobot402 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRobot419 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRobot436 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRobot456 = new BitSet(new long[]{0x0000000000040010L});
    public static final BitSet FOLLOW_18_in_ruleRobot469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDevice_in_entryRuleDevice505 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDevice515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSensor_in_ruleDevice562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActivator_in_ruleDevice589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSensor_in_entryRuleSensor624 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSensor634 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleSensor671 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSensor688 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleSensor705 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAction_in_ruleSensor726 = new BitSet(new long[]{0x0000000000040010L});
    public static final BitSet FOLLOW_18_in_ruleSensor739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActivator_in_entryRuleActivator775 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActivator785 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleActivator822 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleActivator839 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleActivator856 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAction_in_ruleActivator877 = new BitSet(new long[]{0x0000000000040010L});
    public static final BitSet FOLLOW_18_in_ruleActivator890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_entryRuleAction926 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAction936 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAction978 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleAction995 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_ruleParam_in_ruleAction1016 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_22_in_ruleAction1029 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_ruleRetour_in_ruleAction1050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRetour_in_entryRuleRetour1087 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRetour1097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleRetour1134 = new BitSet(new long[]{0x000000000000F800L});
    public static final BitSet FOLLOW_ruleType_in_ruleRetour1155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParam_in_entryRuleParam1191 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParam1201 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleParam1243 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleParam1260 = new BitSet(new long[]{0x000000000000F800L});
    public static final BitSet FOLLOW_ruleType_in_ruleParam1281 = new BitSet(new long[]{0x0000000000000002L});

}